#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2017/5/7 下午6:53
# @Author  : zhangzhen
# @Site    : 
# @File    : word.py
# @Software: PyCharm


class word():

    def __init__(self, ws):

        self.__word = ws[0]
        self.__type = ws[1]
        self.__tendcy = ws[2]
        self.__strength = ws[3]
        self.__aux = ws[4]
        self.__isExtend = ws[5]
        self.__weigth = [float(w) for i, w in enumerate(ws) if i>5]
        pass

    def get_type(self, w):
        if self.__word.strip('་') == w.strip('་'):
            return self.__type
        else:
            return None


class sent_dict():
    path = '../../data/dict.txt'
    # 转折词
    buts = ["འོན་ཏེ", "འོན་ཀྱང", "འུང་ཏེང", "འོན་ཏེ", "འོན་ཏང", "མོད", "འོ་ན", "ཡིན་ཀྱང", "འོན་ཀྱང", "འོན་ཀྱང", "འོན་ཀྱང"]
    # 否定词
    nges = ["མིན", "ཆེས", "མི", "སྐན", "གཏན་ནས་མིན", "མེད་པ", "ཕུར་མི"]
    # 连词
    cons = ["ཤིང", "ཞིང", "ཅིང", "མ་ལ", "གཞན་ཡང", "མ་ཟད", "ཡང་ན", "གཟོད་ནས", "དེ་ཡང", "འོ་ན", "འོན་ཏེ", "འམ", "རྐྱེན་གྱིས", "དང", "འང", "མ་ཚད", "མཁྱཻན", "མ་ཚད", "བྱས་ཙང", "དེ་མིན", "མ་ཟད", "གལ་སྲིད", "གལ་ཏེ", "མ་གཏོགས"]

    # 程度副词
    advs = [
        ["གང་ལེགས", "ཤིན་ཏུ", "ཧ་ཅང", "ཚ་དྲག", "གཏན་པན", "གཏན་ནས", "དྲགས", "ཆེས་པ", "རབ་ཏུ", "ཤོས"],# 权重w 2
        ["སྒོས་སུ", "སྒོས", "ད་སྒོས", "ཡང་སྒོས", "ཁྱད་དུ", "ལྷག་པར", "ཆེས་ཆེར", "ལྡིང་སེ", "ལྡིང་སི", "རྣམ་པར", "ཞེ་དྲག", "ནན་ཏར", "ཨ་ཅང", "རྦད་དེ"],# 权重w 1.7
        ["ལྷག་ཏུ།ལྷག་པར", "དེ་བས", "དེ་བས་ཀྱང","ནན་ཏན་གྱིས","འ་མ","ཝལ་གྱིས","གཞིར་བཅས","འུབ་ཀྱིས"],# 权重w 1.4
        ["འགའ་རེ", "ཆ་ལམ", "ཧ་ལམ", "ཁ་ཤས", "འགའ་ཞིག", "སྙེད", "ཕལ་ཆེར", "མ་མཐར", "ཙམ", "འོལ་སྤྱི", "འོལ་སྤྱི་ཙམ"],# 权重w 1.1
        ["སྤུ་ཙམ", "ཕྲན་ཙམ", "ཏིལ་འབྲུ་ཙམ", "པེ་ཙམ", "ཅག་གེ", "ཟེད་ཙམ", "ཞད་ཙམ", "བག་ཙམ", "རྩ་ན", "ཉེ་བར", "ཞན", "ཨེན", "ལྷང་ཙམ", "ཨེན་ཙམ", "ཕྲན་ཙམ","ཏོག་ཙམ", "ཐེ་གེ་ཙམ", "ཐེ་གེ་ཙམ", "ཏལ་ཙམ", "སྣར་ཙམ"]#权重w 0.8
    ]
    advs_weigth = [2, 1.7, 1.4, 1.1, 0.8]

    # 加载情感词典
    sentiword = []
    for line in open(path):
        line = line.strip()
        ws = line.split('#')
        sentiword.append(word(ws))

    @staticmethod
    def jude_senti_and_get_type(w):
        """判断是否为情感词,如果是获取返回相应的情感类别,否则返回None"""
        for word in sent_dict.sentiword:
            type = word.get_type(w)
            if type is not None:
                return type
        return None

    @staticmethod
    def jude_advs_and_get_weigth(w):
        """判断是否为程度副词,如果是获取返回相应的权重,否则返回None"""
        for index, avs in enumerate(sent_dict.advs):
            if w.strip('་') in avs:
                return sent_dict.advs_weigth[index]
        return None

    @staticmethod
    def jude_neg(w):
        """判断是否为否定词"""
        if w.strip('་') in sent_dict.nges:
            return True
        else:
            return False

    @staticmethod
    def jude_but(w):
        """判断是否为转折词"""
        if w.strip('་') in sent_dict.buts:
            return True
        else:
            return False

    @staticmethod
    def jude_con(w):
        """判断是否为连词"""
        if w.strip('་') in sent_dict.cons:
            return True
        else:
            return False

if __name__ == '__main__':
    print 'Ok'
    type = sent_dict.jude_senti_and_get_type('ངོས་འཛིན་')
    print type
    pass